'''
    1. 在这里我主要演示：抽象基类的abs模块一些使用。
    2. 我们在这里会用到一个函数，hasattr，这个函数的作用呢，只要是去判断莫个对象， 是否有对应的属性(或函数)。如：列子1
    3. 我们在这里会用到一个函数，isinstance 这个函数作用为：去判断莫个对象，是否有对应的类型。
'''
class Abs(object):
    def __init__(self,name_list):
        self.name_list=name_list
    def __len__(self):
        return len(self.name_list)
abs=Abs(["jin","jinbobo"])
# 例子1
# 返回结果为True.(为真)!
print(hasattr(abs,"__len__"))
# 例子2
# 返回结果为True.(为真）！
from collections.abc import Sized
print(isinstance(abs,Sized))

'''
    1. 我们需要强制执行一些方法的时候，必须实现一些方法
    2. 假如我们实现了一个web框架，集成cache缓存(redis,cache,memorychache)
    3. 这时候我们需要设计一个抽象类，指定之类必须实现的一些方法。
'''
# 如何去模拟一个抽象基类
class CacheBase():
    def get(self):
        pass
    def set(self,key,value):
        raise NotImplemented